For reliable data transmission over noisy physical channels, conventional systems often implement a Hybrid ARQ method. In such a system, the transmitter starts by transmitting a portion of an encoded packet (i.e., a subpacket). If the receiver successfully receives and decodes the encoded packet, the transmission of this packet is complete and the transmitter starts to transmit a portion of next encoded packet. If the transmitted subpacket is not successfully decoded, the transmitter either transmits another portion of the encoded packet or transmits the same portion of the encoded packet again. The receiver has two options when receiving a new subpacket for the previously failed subpacket. The receiver can discard the previously received subpacket and decode the newly received subpacket. Alternatively, the receiver can combine the newly received subpacket with the previously received subpacket and then perform decoding.
Because of the round-trip delay for a receiver to decode a subpacket and acknowledge back to the transmitter the success or failure of the decoding, the transmitter usually keeps multiple ARQ instances. When multiple ARQ instances are used, the transmitter transmits the next encoded packet before receiving ACK/NAK (acknowledge/not acknowledge) of the last encoded packet. To achieve this, the transmitter has to keep all outstanding ARQ instances accessible.
Referring to FIG. 1, an example of such a conventional implementation is shown illustrating IS2000 release C and D, where the base station and mobile station each have up to 4 ARQ instances. In IS2000 release D, a mobile station will keep 4 ARQ instances of data packets with the maximum packet size being MaxEP=18456 bits. The maximum size of a subpacket that is to be transmitted is MaxSP=27648 bits. Data packets are turbo encoded with code rate ⅕, using two ⅓ constituent RSC encoders. A turbo encoder is implemented as a parallel concatenated encoder with an internal interleaver memory equal to the size of a data packet. The encoder has 5-bits of output per information bit. The output is sent to one of two banks of buffers for subpacket interleaving and interlacing.
Turbo encoding and subpacket interleaving and interlacing are further explained in FIG. 2 and FIG. 3. FIG. 2 shows a conventional turbo encoder 10. The turbo encoder 10 comprises a turbo interleaver 12, a constituent encoder 14 and a constituent encoder 16. Encoded bits are generated in 5 streams (i.e., S, P0, P1, P0′ and P1′), resulting in 5 data blocks. Each of the data blocks has length equal to the size of the information packets.
The 5 data blocks are interleaved and interlaced as shown in FIG. 3, the result of which is an encoded packet of having a size of 5×EPSize. When transmitting, only a portion (usually continuous) of the whole encoded packet is transmitted. Such a portion is normally called a subpacket. Different portions of the encoded packet form different subpackets.
In general, a subpacket is only a subset of the total encoded symbols. To save interleaving and interlacing memory, only the subpacket symbols are saved into memory. Because of interleaving and interlacing, encoded symbols for a certain subpacket are not sequentially selected at the encoder output. Out of every 5 coded symbols, between 0 and all 5 symbols belong to a specific subpacket: The data rate from the turbo encoder to the interleaver memory is a variable. Directly connecting the turbo encoder output to the interleaving and interlacing memory increases design complexity and reduces hardware efficiency.
Another drawback to such a conventional approach is that the turbo interleaver memory inside the turbo encoder is virtually a replica of buffer used for multiple instance ARQ, causing inefficient and/or redundant use of memory.
It would be desirable to implement memory efficient streamlined transmitter architecture with multiple instance hybrid ARQ.